<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
</body>
<script>
    const date = new Date();//使用new Date()  如果没有参数 返回当前系统的当前时间
    // console.log(date.getFullYear());  //返回当前日期的年 2022
    // console.log(date.getMonth() + 1); // 月份 返回的月份小一 所以+上一个1
    // console.log(date.getDate());  // 返回的是几号
    // console.log(date.getDay());  // 周一返回1 周六返回6  周日返回0
    // console.log(date.getHours());//时
    // console.log(date.getMinutes());//分
    // console.log(date.getSeconds());//秒
    // console.log(date.toLocaleString());//返回当天时间格式---2022/7/12 13:44:57
    // console.log(date.toLocaleDateString());//2022/7/12  返回当前的年月日
    // console.log(date.toLocaleTimeString());//19:51:10 返回当前的时分秒
    // console.log(date.toString());//Tue Jul 12 2022 19:51:10 GMT+0800 (中国标准时间)
    // console.log(date.toTimeString());//19:51:10 GMT+0800 (中国标准时间)
    // console.log(date.toUTCString());//Tue, 12 Jul 2022 11:51:10 GMT
    // console.log(date.valueOf(),+date);//返回当前时间戳
    // console.log(date.getMilliseconds());//923 ---获取毫秒数
    // console.log(date.getTimezoneOffset());//-480 ---获取时区偏移
    // console.log(date.getTime());//1657627429923 ---返回当前时间戳
    // console.log(date.getUTCDate());//12 ---当前是多少号
    // console.log(date.getUTCDay());//2 ---格林威治时间坐标
    // console.log(date.getUTCFullYear());//2022 ---获取年份
    // console.log(date.getUTCHours());//12 ---返回Date对象中用全球标准时间 (UTC) 表示的小时值
    // console.log(date.getUTCMilliseconds());// 923 ---方法可根据世界时 (UTC) 返回时间的毫秒(0~999)
    // console.log(date.getUTCMinutes());//3 ---方法可根据世界时 (UTC) 返回时间的分钟字段(0~59)
    // console.log(date.getUTCMonth());//6 ---按照世界时 UTC,返回月份  (月份 返回的月份小1)
    // console.log(date.getUTCSeconds());//49 ---方法可根据世界时返回时间的秒数(0~59)
    // console.log(Date.now());//657629338002 ---返回当前时间戳

    function setDate(num) {
          return Date.now() + num * 24 * 60 * 60 * 1000
    }
    let time = setDate(3);//获取三天后的时间戳
    let times = setDate(-1);//获取一天前的时间戳
    let timer = setDate(-.5) //12个小时之前的时间 
    /** 
 * @description 时间戳转化为年 月 日 时 分 秒 
 * @method formatTime(format,num)
 * @param {string} [format='YYYY-mm-dd HH:MM:SS'] 时间格式,不填时默认使用'YYYY-mm-dd HH:MM:SS'格式,更改只需替换中间连接符号就行'YYYY年mm月dd日 HH时MM分SS秒'
 * @param {number} [num = new Date().getTime()] 时间戳,默认使用当前时间戳, new Date().getTime(); 获取当前时间戳（毫秒）
 * @example 
 *  var sjc = 1472048779952; //js一般获取的时间戳是13位，PHP一般是10位
    formatTime('YYYY-mm-dd HH:MM:SS',sjc)
 */
    const formatTime = (format = "", num = new Date().getTime()) => {
        format = format || "YYYY-mm-dd HH:MM:SS";   //第一个参数不填时，使用默认格式
        let ret, date, renum;
        // 处理时间戳，js一般获取的时间戳是13位，PHP一般是10位,根据实际情况做判断处理
        if (num.toString().length == 10) {
            date = new Date(parseInt(num) * 1000);
        } else {
            date = new Date(parseInt(num));
        }
        const opt = {
            "Y": date.getFullYear().toString(), // 年
            "m": (date.getMonth() + 1).toString(), // 月
            "d": date.getDate().toString(), // 日
            "H": date.getHours().toString(), // 时
            "M": date.getMinutes().toString(), // 分
            "S": date.getSeconds().toString() // 秒
            // 目前用的是这六种符号,有其他格式化字符需求可以继续添加，值必须转化成字符串
        };
        for (var k in opt) {
            ret = new RegExp("(" + k + "+)").exec(format);
            if (ret) {
                renum = (ret[1].length == 1) ? (opt[k]) : (opt[k].padStart(ret[1].length, "0")) //根据复数前面是否补零,如“mm”补零，单“m”前面不补零
                format = format.replace(ret[1], renum)  //替换
            };
        };
        return format;
    };
    console.log(formatTime("YYYY年mm月dd日 HH时MM分SS秒", time));//三天后的日期
    console.log(formatTime("YYYY年mm月dd日 HH时MM分SS秒", times));//一天前的日期
    console.log(formatTime("YYYY年mm月dd日 HH时MM分SS秒", timer));//12个小时之前的时间 
    </script>
</html>